home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 6 / clmfeb85.zip / CASM.1 < prev    next >
Text File  |  1988-07-25  |  2KB  |  73 lines

  1.  
  2.                             Listing 1
  3.                      C to Assembly Interface
  4.  
  5.  
  6. T ENDS
  7. ;
  8. DSPIO   PROC   NEAR
  9.         POP    SI         ; SAVE RETURN ADDRESS
  10.         POP    AX         ; GET PARAMETERS
  11.         POP    BX
  12.         POP    CX
  13.         POP    DX
  14.         POP    DI         ; OPTIONAL POINTER TO 4 WORD AREA
  15.         INT    10H
  16.         CMP    SP,BP      ; BP IS ALWAYS >= OFFSET OF LAST ARGUMENT
  17.         J┴     DON┼       ╗ I╞ N╧ RETUR╬ POINTE╥ PASTITL┼ DSPI╧ - ì
  18.                           ; SUBROUTIN┼ T╧ PERFOR═ DIREC╘ SCREE╬ I/O
  19. ;
  20. ; int ax, bx, cx, dx ;
  21. ; char retval [8] ; 
  22. ;
  23. ;   dspio( ax, bx, cx, dx, retval ) ;
  24. ;   dspio( ax ) ;
  25. ;   dspio( ax, bx ) ;  
  26. ;   dspio( ax, bx, cx ) ;
  27. ;   dspio( ax, bx, cx, dx ) ;
  28. ;
  29. ;    ax - dx VALUES TO BE PLACED IN THE REGISTERS OF THE SAME NAME
  30. ;            AS NEEDED BY PARTICULAR VIDEO I/O FUNCTION
  31. ;
  32. ;    retval, IF SUPPLIED IS A POINTER TO A 4 WORD AREA INTO WHICH THE
  33. ;            4 REGISTERS AX - DX ARE COPIED AFTER RETURN FROM INT 10H.
  34. ;
  35. DGROUP  GROUP  DATA
  36. DATA    SEGMENT WORD PUBLIC 'DATA'
  37.         ASSUME  DS:DGROUP
  38. DATA    ENDS
  39. ;
  40. PGROUP  GROUP  PROG
  41. PROG    SEGMENT  BYTE  PUBLIC 'PROG'
  42.         ASSUME   CS:PGROUP
  43.         PUBLIC   DSPIO
  44. ;
  45. RLAYOUT  STRUC        ; Return address space layout; pointed at by retval
  46. RAX     DW    ?       
  47. RBX     DW    ?
  48. RCX     DW    ?
  49. RDX     DW    ?
  50. RLAYOUT ENDS
  51. ;
  52. DSPIO   PROC   NEAR
  53.         POP    SI         ; SAVE RETURN ADDRESS
  54.         POP    AX         ; GET PARAMETERS
  55.         POP    BX
  56.         POP    CXè        POP    DX
  57.         POP    DI         ; OPTIONAL POINTER TO 4 WORD AREA
  58.         INT    10H
  59.         CMP    SP,BP      ; BP IS ALWAYS >= OFFSET OF LAST ARGUMENT
  60.         JA     DONE       ; IF NO RETURN POINTER PASSED, DON'T SAVE VALUES
  61.         MOV    [DI].RAX,AX
  62.         MOV    [DI].RBX,BX
  63.         MOV    [DI].RCX,CX
  64.         MOV    [DI].RDX,DX
  65.     JMP    SI
  66. DONE:   PUSH   DI       
  67.         PUSH   DX       ; RESTORE STACK BECAUSE OF THE POSSIBILITY THAT THEY
  68.         PUSH   CX       ; WERE NOT PASSED AS ARGUMENTS
  69.         PUSH   BX
  70.         JMP SI
  71. DSPIO   ENDP
  72. PROG    ENDS
  73.         END